#ifndef GUIAPPLICATION_H_
#define GUIAPPLICATION_H_

#include <string>
#include "app/ApplicationConfig.h"
#include "gui/objects/GUIMap.h"
#include "gui/objects/GUIRoute.h"
#include "gui/GUIEngine.h"
#include "gui/Viewport.h"
#include "util/logger/Logger.h"

namespace gui {

/* @class GUIApplication */
class GUIApplication {
public:

	/* Constructor. */
	GUIApplication(GUIMap* guiMap, GUIRoute* guiRoute, int viewportX, int viewportY,
			int viewportScrollSpeed, int screenW, int screenH,
			int screenBPP, std::string screenCaption, bool fullscreen);

	/* Destructor. */
	virtual ~GUIApplication();

	/* Ejecuta la interfaz grafica de la aplicacion.
	 * Recibe como parametro el mapa a mostrar. */
	virtual void launch();

private:
	GUIMap* map;        // map (del modelo)
	Viewport* viewport; // Viewport (porcion visible del mapa)
	GUIEngine* engine;  // motor de graficos

	util::Logger* logger();
};

}

#endif /* GUIAPPLICATION_H_ */
